package com.tanhua.server.controller;

import com.tanhua.domain.db.User;
import com.tanhua.domain.db.UserInfo;
import com.tanhua.dubbo.api.db.UserApi;
import com.tanhua.server.service.UserService;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.ws.rs.POST;
import java.util.Date;
import java.util.Map;


@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

//    登录第一步，发验证码
//    请求方式：POST
//    请求路径：/user/login
//    请求参数：json格式 ： {“phone”:"1380013800"}
//    返回结果：无
    @PostMapping(value = "/login",name = " 登录第一步，发验证码")
    public ResponseEntity sendSmsCode(@RequestBody Map param) throws Exception{
        String phone = (String) param.get("phone");
        return userService.sendSmsCode(phone);
    }
//    登录第二步，校验验证码并且登录
//    请求方式：POST
//    请求路径：/user/loginVerification
//    请求参数：json格式 ： {"phone":"1380013800","verificationCode":"1212121"}
//    返回结果： {"token":"rgsdgsd.adfgdd.adgasd","isNew":false}
    @PostMapping(value = "/loginVerification",name = "登录第二步，校验验证码并且登录")
    public ResponseEntity loginVerification(@RequestBody Map param) throws Exception{
        String phone = (String) param.get("phone");
        String verificationCode = (String) param.get("verificationCode");
        return userService.loginVerification(phone,verificationCode);
    }

    //    新用户登录后填写个人资料
//    请求方式：POST
//    请求路径：/user/loginReginfo
//    请求参数：请求头上Authorization：token值   json格式 ： {"gender":"man","nickname":"夜店王子","birthday":"2000-09-09"，"city":"北京市-北京市-西城区"}
//    返回结果：无}
    @PostMapping(value = "/loginReginfo",name = "新用户登录后填写个人资料")
    public ResponseEntity loginReginfo(@RequestHeader("Authorization") String token, @RequestBody UserInfo userInfo) throws Exception{
        return userService.loginReginfo(token,userInfo);
    }



//    新用户登录后上传头像
//    请求方式：POST
//    请求路径：/user/loginReginfo/head
//    请求参数：请求头上Authorization：token值  文件：headPhoto
//    返回结果：无
    @PostMapping(value = "/loginReginfo/head",name = "新用户登录后上传头像")
    public ResponseEntity loginReginfoHead(@RequestHeader("Authorization") String token, MultipartFile headPhoto) throws Exception{
        return userService.loginReginfoHead(token,headPhoto);
    }

















//    1、新增用户
//    请求方式Post
//    请求地址：user/save
//    请求参数： Body {"phone":"13800138000","password":"111111"}
//    返回结果：用户新增后的id

    @PostMapping(value = "/save",name = "用户新增")
    public ResponseEntity save(@RequestBody Map param){
        String phone = (String) param.get("phone");
        String password = (String) param.get("password");
       return userService.save(phone,password);
    }


//    2、根据电话号码查询用户

    //    请求方式get
//    请求地址：user/findByMobile
//    请求参数 Query：?mobile=13800138000
//    返回结果：用户

    @GetMapping(value = "/findByMobile",name = "用户查询")
    public ResponseEntity findByMobile(String mobile){
        return userService.findByMobile(mobile);
    }



}
